// 封装axios

// 1.导入axios框架
import axios from "axios";
// config={
//     url:'/api/horoscope',
//     params: {
//         type: "scorpio",
//         time: "today",
//       },
// }
export default function (config) {
    // 2.创建axios实例
    const axiosInstance = axios.create({
        baseURL: 'https://api.vvhan.com',
        timeout: 5000
    })

    // 3.axios的拦截器
    // （1）请求拦截器的作用
    // =>修改config中一些不符合服务器要求的信息
    // =>在页面中展示发送网络请求时，等待请求的图标
    // =>检测某些网络请求（比如登录（token）），必须携带一些特殊信息
    axiosInstance.interceptors.request.use(config => {
        console.log("发送请求成功的拦截");
        return config;
    }, err => {
        console.log("发送请求失败的拦截");
    })

    // （2）响应拦截器的作用
    // 响应成功拦截中，主要是对数据进行过滤
    // 响应失败的拦截中，可以根据status判断报错的错误码，跳转到不同的错误提示页面
    axiosInstance.interceptors.response.use(response => {
        console.log("res", response);
        console.log("响应成功的拦截");
        return response.data;
    }, err => {
        console.log("err", err);
        console.log("响应失败的拦截");
        if (err.code === "ERR_NETWORK") {
            err.message="请求错误";
        }else{
            err.message="未知错误";
        }
    })

    // 4.把处理返回值的步骤返回出去
    // 方法一：把回调函数作为参数传入进来
    // axiosInstance(config).then(res=>{
    //    success(res);
    // })

    // 方法二：直接返回一个promise对象(推荐)
    return axiosInstance(config)

}